package com.xuelang.pipeline.domain.pipeline.service;

import com.xuelang.pipeline.client.common.result.PageRecord;
import com.xuelang.pipeline.client.pipeline.dto.GroupQuery;
import com.xuelang.pipeline.domain.pipeline.Group;

import java.util.Date;
import java.util.List;

/**
 * 流水线分组领域服务类
 *
 * @author xiwen.zxg
 * @since 2024/5/15
 */
public interface GroupDomainService {
    /**
     * 获取流水线分组列表，有过滤条件
     *
     * @param currentPage
     * @param pageSize
     * @param groupQuery
     * @return
     */
    PageRecord<Group> pageList(long currentPage, long pageSize, GroupQuery groupQuery);
    /**
     * 获取流水线分组列表，有过滤条件
     *
     * @param groupQuery
     * @return
     */
    List<Group> list(GroupQuery groupQuery);
    /**
     * 获取流水线分组列表，通过uuid列表
     *
     * @param uuidList
     * @return
     */
    List<Group> listByUuidList(List<String> uuidList);
    /**
     * 新增流水线分组
     *
     * @param group
     * @return
     */
    Boolean save(Group group);

    /**
     * 批量新增/更新流水线分组
     * @param groupList
     * @return
     */
    Boolean batchSaveOrUpdate(List<Group> groupList, String creatorId, Date createTime);

    /**
     * 更新流水线分组
     *
     * @param group
     * @return
     */
    Boolean update(Group group);
    /**
     * 删除流水线分组
     *
     * @param uuid
     * @return
     */
    Boolean delete(String uuid);

    /**
     * 查询流水线分组
     *
     * @param uuid
     * @return
     */
    Group query(String uuid);
    /**
     * 判断分组名称是否存在
     *
     * @param uuid
     * @param name
     * @return
     */
    Boolean existsName(String uuid, String name);

}
